home *** CD-ROM | disk | FTP | other *** search
- " ---------------------------------------------------------------------"
- " GamePort Class is an abstract Class that allows the user of AmigaTalk"
- " to utilize the GamePort Device that the Amiga PC uses to detect "
- " input events, such as mouse movement or button clicks or joystick "
- " movement. "
- " ---------------------------------------------------------------------"
- " WARNING: You should know what you're doing to the Amiga OS before "
- " messing with this Class, or any other System Class! "
- " ---------------------------------------------------------------------"
-
- Class GamePort :Device
- [
- openGamePort: whichUnit named: portname
- ^ super subclassResponsibility: 'openGamePort:named:'
- |
- getControllerType: portname
- "The integer returned by this method is one of the following: "
-
- " GPCT_ALLOCATED -1"
- " GPCT_NOCONTROLLER 0"
- " GPCT_MOUSE 1"
- " GPCT_RELJOYSTICK 2"
- " GPCT_ABSJOYSTICK 3"
- ^ <primitive 223 7 portname>
- |
- new: dummy
- ^ super doesNotUnderstand: 'new:'
- ]
-
- " -------------------------------------------------------------------- "
- " Mouse Class allows the User to setup & use a Mouse. "
- " -------------------------------------------------------------------- "
-
- Class Mouse :GamePort
- ! pname !
- [
- openMousePort: whichUnit named: portname ! chk !
- <primitive 223 1 portname whichUnit>.
-
- chk <- <primitive 223 7 portname>.
-
- (chk == 0)
- ifTrue: [ <primitive 223 8 portname 1>. "GPCT_MOUSE <- 1"
- pname <- portname.
- ^ self
- ]
- ifFalse: [ self error: 'Mouse port ',whichUnit,' already in use!'.
- ^ pname <- nil
- ]
- |
- closeMousePort
- <primitive 223 0 pname>
- |
- clearMousePortBuffer
- <primitive 223 6 pname>
- |
- getButtonCode
- ^ <primitive 223 10 pname>
- |
- getQualifiers
- ^ <primitive 223 11 pname>
- |
- getXPos
- ^ <primitive 223 12 pname>
- |
- getYPos
- ^ <primitive 223 13 pname>
- |
- getIEAddress
- ^ <primitive 223 14 pname>
- |
- getTimeStamp
- ^ <primitive 223 15 pname>
- |
- getTriggerKeys
- ^ <primitive 223 16 pname>
- |
- getTriggerTime
- ^ <primitive 223 17 pname>
- |
- getTriggerXDelta
- ^ <primitive 223 18 pname>
- |
- getTriggerYDelta
- ^ <primitive 223 19 pname>
- |
- setKeyTransition: transType
-
- "GPTF_UPKEYS = 2, GPTF_DOWNKEYS = 1 or GPTF_DOWNKEYS + GPTF_UPKEYS:"
-
- (transType >= 1 & transType <= 3)
- ifTrue: [ <primitive 223 2 pname transType> ]
- ifFalse: [ 'transType parameter out of range (1 to 3 only)!' print ]
- |
- setTimeTransition: timeOutValue
- (timeOutValue < 0)
- ifTrue: [ 'timeOutValue out of range (S/B >= 0).' print.
- ^ nil
- ].
- <primitive 223 3 pname timeOutValue>
- |
- setXDeltaTransition: xvalue
- <primitive 223 4 pname xvalue>
- |
- setYDeltaTransition: yvalue
- <primitive 223 5 pname yvalue>
- |
- waitForButton: kvalue ! ret !
- ret <- self getButtonCode.
- [ret = kvalue] whileFalse: [ret <- self getButtonCode]
- |
- waitForQualifier: qvalue ! ret !
- ret <- self getQualifiers.
- [ret = qvalue] whileFalse: [ret <- self getQualifiers]
- |
- waitForXPos: xvalue ! ret !
- ret <- self getXPos.
- [ret = xvalue] whileFalse: [ret <- self getXPos]
- |
- waitForYPos: yvalue ! ret !
- ret <- self getYPos.
- [ret = yvalue] whileFalse: [ret <- self getYPos]
- ]
-
- " -------------------------------------------------------------------- "
- " AbsJoyStick Class allows the User to setup & use an Absolute-type "
- " JoyStick."
- " -------------------------------------------------------------------- "
-
- Class AbsJoyStick :GamePort
- ! pname !
- [
- openGamePort: whichUnit named: portname ! chk !
- <primitive 223 1 portname whichUnit>.
-
- chk <- <primitive 223 7 portname>.
-
- (chk == 0)
- ifTrue: [ <primitive 223 8 portname 3>. "GPCT_ABSJOYSTICK <- 3"
- pname <- portname.
- ^ self
- ]
- ifFalse: [ self error: 'Game port ',whichUnit,' already in use!'.
- ^ pname <- nil
- ]
- |
- closeGamePort
- <primitive 223 0 pname>
- |
- clearGamePortBuffer
- <primitive 223 6 pname>
- |
- getButtonCode
- ^ <primitive 223 10 pname>
- |
- getQualifiers
- ^ <primitive 223 11 pname>
- |
- getXPos
- ^ <primitive 223 12 pname>
- |
- getYPos
- ^ <primitive 223 13 pname>
- |
- getIEAddress
- ^ <primitive 223 14 pname>
- |
- getTimeStamp
- ^ <primitive 223 15 pname>
- |
- getTriggerKeys
- ^ <primitive 223 16 pname>
- |
- getTriggerTime
- ^ <primitive 223 17 pname>
- |
- getTriggerXDelta
- ^ <primitive 223 18 pname>
- |
- getTriggerYDelta
- ^ <primitive 223 19 pname>
- |
- setKeyTransition: transType
-
- "GPTF_UPKEYS = 2, GPTF_DOWNKEYS = 1 or GPTF_DOWNKEYS + GPTF_UPKEYS:"
-
- (transType >= 1 & transType <= 3)
- ifTrue: [ <primitive 223 2 pname transType> ]
- ifFalse: [ 'transType parameter out of range (1 to 3 only)!' print ]
- |
- setTimeTransition: timeOutValue
- (timeOutValue < 0)
- ifTrue: [ 'timeOutValue out of range (S/B >= 0).' print.
- ^ nil
- ].
- <primitive 223 3 pname timeOutValue>
- |
- setXDeltaTransition: xvalue
- <primitive 223 4 pname xvalue>
- |
- setYDeltaTransition: yvalue
- <primitive 223 5 pname yvalue>
- |
- waitForButton: kvalue ! ret !
- ret <- self getButtonCode.
- [ret = kvalue] whileFalse: [ret <- self getButtonCode]
- |
- waitForQualifier: qvalue ! ret !
- ret <- self getQualifiers.
- [ret = qvalue] whileFalse: [ret <- self getQualifiers]
- |
- waitForXPos: xvalue ! ret !
- ret <- self getXPos.
- [ret = xvalue] whileFalse: [ret <- self getXPos]
- |
- waitForYPos: yvalue ! ret !
- ret <- self getYPos.
- [ret = yvalue] whileFalse: [ret <- self getYPos]
- ]
-
- " -------------------------------------------------------------------- "
- " RelJoyStick Class allows the User to setup & use a Relative-type "
- " (Analog) JoyStick."
- " -------------------------------------------------------------------- "
-
- Class RelJoyStick :GamePort
- ! pname !
- [
- openGamePort: whichUnit named: portname ! chk !
- <primitive 223 1 portname whichUnit>.
-
- chk <- <primitive 223 7 portname>.
-
- (chk == 0)
- ifTrue: [ <primitive 223 8 portname 2>. "GPCT_RELJOYSTICK <- 2"
- pname <- portname.
- ^ self
- ]
- ifFalse: [ self error: 'Game port ',whichUnit,' already in use!'.
- ^ pname <- nil
- ]
- |
- closeGamePort
- <primitive 223 0 pname>
- |
- clearGamePortBuffer
- <primitive 223 6 pname>
- |
- getButtonCode
- ^ <primitive 223 10 pname>
- |
- getQualifiers
- ^ <primitive 223 11 pname>
- |
- getXPos
- ^ <primitive 223 12 pname>
- |
- getYPos
- ^ <primitive 223 13 pname>
- |
- getIEAddress
- ^ <primitive 223 14 pname>
- |
- getTimeStamp
- ^ <primitive 223 15 pname>
- |
- getTriggerKeys
- ^ <primitive 223 16 pname>
- |
- getTriggerTime
- ^ <primitive 223 17 pname>
- |
- getTriggerXDelta
- ^ <primitive 223 18 pname>
- |
- getTriggerYDelta
- ^ <primitive 223 19 pname>
- |
- setKeyTransition: transType
-
- "GPTF_UPKEYS = 2, GPTF_DOWNKEYS = 1 or GPTF_DOWNKEYS + GPTF_UPKEYS:"
-
- (transType >= 1 & transType <= 3)
- ifTrue: [ <primitive 223 2 pname transType> ]
- ifFalse: [ 'transType parameter out of range (1 to 3 only)!' print ]
- |
- setTimeTransition: timeOutValue
- (timeOutValue < 0)
- ifTrue: [ 'timeOutValue out of range (S/B >= 0).' print.
- ^ nil
- ].
- <primitive 223 3 pname timeOutValue>
- |
- setXDeltaTransition: xvalue
- <primitive 223 4 pname xvalue>
- |
- setYDeltaTransition: yvalue
- <primitive 223 5 pname yvalue>
- |
- waitForButton: kvalue ! ret !
- ret <- self getButtonCode.
- [ret = kvalue] whileFalse: [ret <- self getButtonCode]
- |
- waitForQualifier: qvalue ! ret !
- ret <- self getQualifiers.
- [ret = qvalue] whileFalse: [ret <- self getQualifiers]
- |
- waitForXPos: xvalue ! ret !
- ret <- self getXPos.
- [ret = xvalue] whileFalse: [ret <- self getXPos]
- |
- waitForYPos: yvalue ! ret !
- ret <- self getYPos.
- [ret = yvalue] whileFalse: [ret <- self getYPos]
- ]
-